perm filename EDGES.SAI[PIC,HE] blob
sn#430324 filedate 1979-04-03 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00005 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 ENTRY XAXIS,YAXIS
C00003 00003 INTERNAL SIMPLE PROCEDURE XAXIS(INTEGER OBUF,CURBUF,THR,NOISE)
C00005 00004 INTERNAL PROCEDURE YAXIS(INTEGER OBUF,CURBUF,THR,NOISE)
C00007 00005 END "EDGES"
C00008 ENDMK
C⊗;
ENTRY XAXIS,YAXIS;
BEGIN "EDGES"
REQUIRE "36A" COMPILER!SWITCHES;
REQUIRE "BUFDEC.SAI" SOURCE!FILE;
INTERNAL SIMPLE PROCEDURE XAXIS(INTEGER OBUF,CURBUF,THR,NOISE);
BEGIN "XAXIS"
INTEGER I,J,VAL,COORD,LEVEL,NV,LV,ISTOP,JSTOP,IPTR;
BOOLEAN STATE;
NV←0;
STATE←TRUE;
VAL←0;
ISTOP←ROWS(OBUF); JSTOP←COLMS(OBUF);
FOR I←1 THRU ISTOP DO
BEGIN
IPTR←INPTR(I,1,OBUF);
FOR J←1 THRU JSTOP DO
BEGIN "COMP"
LV←NV;
NV←ILDB(IPTR);
IF STATE THEN
IF NV<LV THEN
BEGIN
IF (VAL-NV)>NOISE THEN
BEGIN
STATE←FALSE;
IF VAL>THR THEN PUTPNT(I,COORD+LEVEL%2,VAL,CURBUF);
LEVEL←0;
END
END
ELSE IF NV>LV THEN
BEGIN
COORD←J;
VAL←NV;
LEVEL←0;
END
ELSE LEVEL←LEVEL+1
ELSE IF NV>LV THEN
BEGIN
STATE←TRUE;
COORD←J;
VAL←NV;
END;
END "COMP";
ROWCHK(CHKROW,ROWS,I,50);
END;
END "XAXIS";
INTERNAL PROCEDURE YAXIS(INTEGER OBUF,CURBUF,THR,NOISE);
BEGIN "YAXIS"
INTEGER I,J,NV,LV,ISTOP,JSTOP,VAL1,IPTR;
ISTOP←ROWS(OBUF); JSTOP←COLMS(OBUF);
BEGIN
SAFE INTEGER ARRAY VAL,COORD,OVAL,LEVEL [1:JSTOP];
SAFE BOOLEAN ARRAY STATE [1:JSTOP];
FOR J←1 THRU JSTOP DO
BEGIN
STATE[J]←TRUE;
VAL[J]←COORD[J]←OVAL[J]←LEVEL[J]←0;
END;
FOR I←1 THRU ISTOP DO
BEGIN
IPTR←INPTR(I,1,OBUF);
FOR J←1 THRU JSTOP DO
BEGIN "CALC"
LV←OVAL[J];
NV←ILDB(IPTR);
OVAL[J]←NV;
IF STATE[J] THEN
IF NV<LV THEN
BEGIN
IF (VAL[J]-NV)>NOISE THEN
BEGIN
STATE[J]←FALSE;
IF VAL[J]>THR THEN PUTPNT(VAL1←(COORD[J]+LEVEL[J]%2),J,VAL[J],CURBUF);
LEVEL[J]←0;
END
END
ELSE IF NV>LV THEN
BEGIN
COORD[J]←I;
VAL[J]←NV;
LEVEL[J]←0;
END
ELSE LEVEL[J]←LEVEL[J]+1
ELSE IF NV>LV THEN
BEGIN
STATE[J]←TRUE;
COORD[J]←I;
VAL[J]←NV;
END;
END "CALC";
ROWCHK(CHKROW,ROWS,I,50);
END;
END;
END "YAXIS";
END "EDGES"